From 69f74e87be7d24c11d106f93275ad7004d295d7f Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Fri, 4 Apr 2008 13:10:34 +0100 Subject: [PATCH] x86: fold GDT and LDT page types ...it's an unecessary distinction Signed-off-by: Jan Beulich --- xen/arch/x86/mm.c | 19 +++++++------------ xen/include/asm-x86/mm.h | 3 +-- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index a1220af3b3..766b4bf057 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -476,7 +476,7 @@ static void invalidate_shadow_ldt(struct vcpu *v) if ( pfn == 0 ) continue; l1e_write(&v->arch.perdomain_ptes[i], l1e_empty()); page = mfn_to_page(pfn); - ASSERT_PAGE_IS_TYPE(page, PGT_ldt_page); + ASSERT_PAGE_IS_TYPE(page, PGT_seg_desc_page); ASSERT_PAGE_IS_DOMAIN(page, v->domain); put_page_and_type(page); } @@ -530,7 +530,7 @@ int map_ldt_shadow_page(unsigned int off) if ( unlikely(!mfn_valid(mfn)) ) return 0; - okay = get_page_and_type(mfn_to_page(mfn), d, PGT_ldt_page); + okay = get_page_and_type(mfn_to_page(mfn), d, PGT_seg_desc_page); if ( unlikely(!okay) ) return 0; @@ -924,7 +924,7 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain *d) { /* We expect this is rare so we blow the entire shadow LDT. */ if ( unlikely(((page->u.inuse.type_info & PGT_type_mask) == - PGT_ldt_page)) && + PGT_seg_desc_page)) && unlikely(((page->u.inuse.type_info & PGT_count_mask) != 0)) && (d == e) ) { @@ -1748,8 +1748,7 @@ static int alloc_page_type(struct page_info *page, unsigned long type) return alloc_l3_table(page); case PGT_l4_page_table: return alloc_l4_table(page); - case PGT_gdt_page: - case PGT_ldt_page: + case PGT_seg_desc_page: return alloc_segdesc_page(page); default: printk("Bad type in alloc_page_type %lx t=%" PRtype_info " c=%x\n", @@ -3134,7 +3133,7 @@ long set_gdt(struct vcpu *v, { mfn = frames[i] = gmfn_to_mfn(d, frames[i]); if ( !mfn_valid(mfn) || - !get_page_and_type(mfn_to_page(mfn), d, PGT_gdt_page) ) + !get_page_and_type(mfn_to_page(mfn), d, PGT_seg_desc_page) ) goto fail; } @@ -3211,12 +3210,8 @@ long do_update_descriptor(u64 pa, u64 desc) /* Check if the given frame is in use in an unsafe context. */ switch ( page->u.inuse.type_info & PGT_type_mask ) { - case PGT_gdt_page: - if ( unlikely(!get_page_type(page, PGT_gdt_page)) ) - goto out; - break; - case PGT_ldt_page: - if ( unlikely(!get_page_type(page, PGT_ldt_page)) ) + case PGT_seg_desc_page: + if ( unlikely(!get_page_type(page, PGT_seg_desc_page)) ) goto out; break; default: diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index 7826db4feb..f4fdad1327 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -69,8 +69,7 @@ struct page_info #define PGT_l2_page_table (2U<<29) /* using this page as an L2 page table? */ #define PGT_l3_page_table (3U<<29) /* using this page as an L3 page table? */ #define PGT_l4_page_table (4U<<29) /* using this page as an L4 page table? */ -#define PGT_gdt_page (5U<<29) /* using this page in a GDT? */ -#define PGT_ldt_page (6U<<29) /* using this page in an LDT? */ +#define PGT_seg_desc_page (5U<<29) /* using this page in a GDT/LDT? */ #define PGT_writable_page (7U<<29) /* has writable mappings of this page? */ #define PGT_type_mask (7U<<29) /* Bits 29-31. */ -- 2.30.2